#ifndef NETMAIN_H
#define NETMAIN_H

#include <QObject>
#include <QJsonArray>
class QTcpSocket;
class NetMain : public QObject
{
    Q_OBJECT
protected:
    explicit NetMain(QObject *parent = nullptr);

public:
    static NetMain *getObject();
    /**
     * @brief 车辆位置发生改变
     * @param roundId
     * @param roundPos
     */
    void carPosChanged(int roundId, int roundPos);

protected slots:
    // 获取通信字段
    void clientReadyReadSlot();

signals:
    void LampControl(bool sw);
    void setCarAlarmSig(bool sw);
    void setCarAlarmLightSig(bool sw);
    void setCarStatusSig(bool sw);
    /**
     * @brief newLamp
     * @param roadId
     * @param color  0-绿色  1-黄色 2-红色 3-白色/熄灭
     */
    void newLamp(int roadId, int color);

protected:
    //连接
    void connectToHost();
    void sendIdentity();
    //解析
    void handleFrame(const QJsonObject &obj);
    //灯光控制
    void handleLampControl(const QJsonObject &obj);
    //报警控制
    void handleCarAlarmFrame(const QJsonObject &obj);
    //报警灯控制
    void handleCarAlarmLightFrame(const QJsonObject &obj);
    //状态控制
    void handleCarStatusFrame(const QJsonObject &obj);

    void handleLampFrame(const QJsonObject &obj);


    static NetMain *obj;
    QTcpSocket *client;

};

#endif // NETMAIN_H
